// plugin/components/paginate/paginate.js
const app = getApp();
Component({
    options: {
        addGlobalClass: true,
      },
    /**
     * 组件的属性列表
     */
    properties: {
        url: { // 属性名
            type: String, // 类型（必填），目前接受的类型包括：String, Number, Boolean, Object, Array, null（表示任意类型）
            value: '', // 属性初始值（可选），如果未指定则会根据类型选择一个
            observer: function (newVal, oldVal) { 
                //console.log('url属性被改变');
            } // 属性被改变时执行的函数（可选），也可以写成在methods段中定义的方法名字符串, 如：'_propertyChange'
        },
        height:{
            type:String,
            value:'100vh',
        },
        //模板ID
        template : {
            type: String, // 类型（必填），目前接受的类型包括：String, Number, Boolean, Object, Array, null（表示任意类型）
            value: '', // 属性初始值（可选），如果未指定则会根据类型选择一个
            observer: function (newVal, oldVal) { 
            //console.log('template属性被改变');
            } // 属性被改变时执行的函数（可选），也可以写成在methods段中定义的方法名字符串, 如：'_propertyChange'
        },
    
        //获取form表单的数据接入
        formdata: {
            type: Object, // 类型（必填），目前接受的类型包括：String, Number, Boolean, Object, Array, null（表示任意类型）
            value: {}, // 属性初始值（可选），如果未指定则会根据类型选择一个
            observer: function (newVal, oldVal) { 
            } // 属性被改变时执行的函数（可选），也可以写成在methods段中定义的方法名字符串, 如：'_propertyChange'
        },
    },

    /**
     * 组件的初始数据
     */
    data: {
        is_scroll:true,//当前是否可以滚动
        is_empty:false,//是否为空
        tips:'等待初始化',//
        is_pull:false,//是否启动下拉
        data:[],//列表数据信息
        has_next:true,//是否有后续的资料
        paginate:{},//这是加载出来的所有的数据信息
    },

    /**
     * 组件的方法列表
     */
    methods: {
        //初始化分页系统-对外方法
        _initPaginate : function(){
            this._paginate_init();
        },
        //初始化分页系统
        _paginate_init : function(){
            var ths = this;
            ths.setData({tips:'加载中，请等待 ^v^',data:[],is_pull:true});
            ths.data.formdata.pager = 1;//分页信息
            //获取列表信息
            app.kuoqi.ajax({
              url: ths.data.url,
              method:'post',
              header: { "Content-Type": "application/x-www-form-urlencoded" },
              data:ths.data.formdata,
              success:function(rs){
                var paginate = rs.data;
                //配置数据区域信息
                var formdata = ths.data.formdata;
                formdata.pager++;
                ths.setData({
                    paginate:paginate,//获取分页的相关内容信息
                    formdata:formdata,//配置form单中的pager增加1
                    has_next:paginate.hasNext,//是否拥有后续的列表数据信息
                    is_empty:(paginate.totalCount>0)?0:1,//是否为空
                });
                console.log(paginate.totalCount?0:1,paginate.totalCount);
                ths._bindrefresherrestore();
              },
              fail:function(){
                 ths._bindrefresherabort();
              },
            })
        },

        //加载更多的系统
        _paginate_more : function(){
            var ths = this;
            if(!ths.data.has_next){ return;}
            //计算数值
            // ths.setData({
            //     is_scroll:false,//是否可以滚动，否
            // })
            //获取列表信息
            app.kuoqi.ajax({
                url: this.data.url,
                method:'post',
                header: { "Content-Type": "application/x-www-form-urlencoded" },
                data:ths.data.formdata,
                success:function(rs){
                    //变更新的数据信息
                    var paginate = rs.data;
                    var list = paginate.data;//使用一个叫做list的列表去获取数据内容
                    var orgin = ths.data.paginate;//数据源信息
                    for(var i = 0;i<list.length;i++){
                        orgin.data.push(list[i]);
                    }
                    var formdata = ths.data.formdata;
                    formdata.pager++;
                    ths.setData({
                        paginate:orgin,
                        formdata:formdata,
                        has_next:paginate.hasNext,//是否拥有后续的列表数据信息
                    });
                },
                fail:function(){}
            })
        },

        //自定义下拉刷新被触发 - bindrefresherrefresh
        _bindrefresherrefresh : function(){
            this.setData({
                is_pull:true,
            });
            this._paginate_init();//触发分页初始化
        },

        //自定义下拉刷新被复位 - bindrefresherrestore
        _bindrefresherrestore : function(){
            this.setData({
                is_pull:false,
            });
        },

        //自定义下拉刷新被中止 - bindrefresherabort
        _bindrefresherabort : function(){
            this.setData({
                is_pull:true,
            });
        },
        
        //加载新的数据信息 - bindscrolltolower
        _bindscrolltolower : function(){
            this._paginate_more();
        },
        
        //配置提交的表单的相关数据信息
        _setFormdatas : function(formdata){
            this.setData({formdata:formdata});
        }
    },

    created:function(){
        app.kuoqi.initPage(this);//基础的数据初始化
    },

    lifetimes: {
        // 生命周期函数，可以为函数，或一个在methods段中定义的方法名
        attached: function () { 
            var pages = getCurrentPages();
            var page = pages[pages.length - 1];
            page.kqPaginate = this;
            // console.log(page,this.methods);
            //console.log('lifetimes->attached');
            //this._paginate_init();//初始化分页模块的相关信息
        },
        moved: function () { 
            //console.log('lifetimes->moved');
        },
        detached: function () { 
            //console.log('lifetimes->detached');
        },
    },
})
